package org.example.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;

import java.math.BigDecimal;
import java.sql.Date;
import java.sql.Timestamp;

/**
 * @author ChangJianXiong
 * @date 2022/3/9
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class CustomerDO {

    /**
     * 客户号
     */
    // @Column(name = "customer_no")
    private String customerNo;
    /**
     * 姓名
     */
    // @Column(name = "name")
    private String name;
    /**
     * 性别 CusSexEnum枚举 0男 1女
     */
    // @Column(name = "sex")
    private String sex;
    /**
     * 生日
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    // @Column(name = "birthday")
    private Date birthday;
    /**
     * 年龄
     */
    // @Column(name = "age")
    private Integer age;
    /**
     * 身高(cm)
     */
    // @Column(name = "height")
    private String height;
    /**
     * 体重(kg)
     */
    // @Column(name = "weight")
    private String weight;
    /**
     * 证件号码
     */
    // @Column(name = "id_no")
    private String idNo;
    /**
     * 证件类型
     */
    // @Column(name = "id_type")
    private String idType;
    /**
     * 证件有效期起始日期
     */
    // @Column(name = "start_date")
    private Date startDate;
    /**
     * 证件有效期终止日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    // @Column(name = "validity_date")
    private Date validityDate;
    /**
     * 称呼
     */
    // @Column(name = "appellation")
    private String appellation;
    /**
     * 特殊纪念日
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    // @Column(name = "special_date")
    private Date specialDate;
    /**
     * 年收入
     */
    // @Column(name = "year_salary")
    private BigDecimal yearSalary;
    /**
     * 职业名称
     */
    // @Column(name = "occupation_name")
    private String occupationName;
    /**
     * 职业代码
     */
    // @Column(name = "occupation_code")
    private String occupationCode;
    /**
     * 职业类型
     */
    // @Column(name = "occupation_type")
    private String occupationType;
    /**
     * 学历 CusDegreeEnum枚举 8高中以下，6专科，4本科，2研究生，1博士
     */
    // @Column(name = "degree")
    private String degree;
    /**
     * 爱好
     */
    // @Column(name = "interest")
    private String interest;
    /**
     * 家庭地址省
     */
    // @Column(name = "home_province_addr")
    private String homeProvinceAddr;
    /**
     * 家庭地址市
     */
    // @Column(name = "home_city_addr")
    private String homeCityAddr;
    /**
     * 家庭地址区（县）
     */
    // @Column(name = "home_country_addr")
    private String homeCountryAddr;
    /**
     * 家庭地址路
     */
    // @Column(name = "home_street_addr")
    private String homeStreetAddr;
    /**
     * 家庭地址号
     */
    // @Column(name = "home_no_addr")
    private String homeNoAddr;
    /**
     * 家庭邮政编码
     */
    // @Column(name = "home_zip_code")
    private String homeZipCode;
    /**
     * 工作单位/学校名称
     */
    // @Column(name = "work_unit_school_name")
    private String workUnitOrSchoolName;
    /**
     * 单位地址省
     */
    // @Column(name = "grp_province_addr")
    private String grpProvinceAddr;
    /**
     * 单位地址市
     */
    // @Column(name = "grp_city_addr")
    private String grpCityAddr;
    /**
     * 单位地址区（县）
     */
    // @Column(name = "grp_county_addr")
    private String grpCountryAddr;
    /**
     * 单位地址路
     */
    // @Column(name = "grp_street_addr")
    private String grpStreetAddr;
    /**
     * 单位地址号
     */
    // @Column(name = "grp_no_addr")
    private String grpNoAddr;
    /**
     * 单位邮政编码
     */
    // @Column(name = "grp_zip_code")
    private String grpZipAddr;
    /**
     * 家庭电话
     */
    // @Column(name = "home_phone")
    private String homePhone;
    /**
     * 单位电话
     */
    // @Column(name = "work_phone")
    private String workPhone;
    /**
     * 移动电话
     */
    // @Column(name = "mobile_phone")
    private String mobilePhone;
    /**
     * E_mail
     */
    // @Column(name = "email")
    private String email;
    /**
     * 准客户类别
     */
    // @Column(name = "custom_type")
    private String customType;
    /**
     * 邮寄地址选择
     */
    // @Column(name = "addr_choise")
    private String addrChoise;
    /**
     * 是否转介绍
     */
    // @Column(name = "introduce")
    // @FieldName(name = "IsIntroduce")
    private String introduce;
    /**
     * 转介绍人
     */
    // @Column(name = "introducer")
    private String introducer;
    /**
     * 出生日期状态
     */
    // @Column(name = "birthday_flag")
    private String birthdayFlag;
    /**
     * 客户属性
     */
    // @Column(name = "customer_property")
    // @FieldName(name = "customeProperty")
    private String customerProperty;
    /**
     * 风险账户
     */
    // @Column(name = "risk_account")
    private String riskAccount;
    /**
     * 储蓄账户
     */
    // @Column(name = "save_account")
    private String saveAccount;
    /**
     * 退休账户
     */
    // @Column(name = "retire_account")
    private String retireAccount;
    /**
     * 医疗账户
     */
    // @Column(name = "medical_account")
    private String medicalAccount;
    /**
     * 理财账户
     */
    // @Column(name = "financing_account")
    private String financingAccount;
    /**
     * 资产配置账户
     */
    // @Column(name = "asset_account")
    private String assetAccount;
    /**
     * 国家或者地区
     */
    // @Column(name = "country_or_area")
    private String countryOrArea;
    /**
     * 婚姻状况 CusMarriageEnum枚举 1已婚，5未婚，2离异，6丧偶
     */
    // @Column(name = "marriage")
    private String marriage;
    /**
     * 备用字段2
     */
    // @Column(name = "remark2")
    private String remark2;
    /**
     * 现住址详细地址
     */
    // @Column(name = "home_detail_addr")
    // @FieldName(name = "remark4")
    private String homeDetailAddr;
    /**
     * 邮寄详细地址
     */
    // @Column(name = "mail_detail_addr")
    // @FieldName(name = "remark5")
    private String mailDetailAddr;
    /**
     * 中文现住址详细地址
     */
    // @Column(name = "home_detail_addr_cn")
    private String homeDetailAddrCn;
    /**
     * 中文邮寄详细地址
     */
    // @Column(name = "mail_detail_addr_cn")
    private String mailDetailAddrCn;
    /**
     * 备用字段6
     */
    // @Column(name = "remark6")
    private String remark6;
    /**
     * 备用字段7 工作内容
     */
    // @Column(name = "remark7")
    private String remark7;
    /**
     * 备用字段8 兼职
     */
    // @Column(name = "remark8")
    private String remark8;
    /**
     * 分公司代码
     */
    // @Column(name = "company_code")
    private String companyCode;
    /**
     * 支公司代码
     */
    // @Column(name = "branch_code")
    private String branchCode;
    /**
     * 经代/银保公司代码
     */
    // @Column(name = "organization_code")
    // @FieldName(name = "subCode")
    private String organizationCode;
    /**
     * 代理人姓名
     */
    // @Column(name = "agent_name")
    private String agentName;
    /**
     * 代理人工号
     */
    // @Column(name = "agent_no")
    private String agentNo;
    /**
     * 代理人联合工号
     */
    // @Column(name = "operator")
    // @FieldName(name = "userCode")
    private String operator;
    /**
     * 同步标记
     */
    // @Column(name = "sync_flag")
    private String syncFlag;
    /**
     * 投保标识  A为投保人；I为被保人；2为访客；3为准客户;4为投被保人同一人;5为保单客户
     */
    // @Column(name = "uw_flag")
    private String UWFlag;
    /**
     * 名字拼音
     */
    // @Column(name = "pinyin_name")
    private String pinyinName;
    /**
     * 名字首字母拼音
     */
    // @Column(name = "first_letter_name")
    private String firstLetterName;
    /**
     * 渠道代码
     */
    // @Column(name = "channel")
    private String channel;
    /**
     * 客户来源 I为I投保；Su为新版微建议书；A为活动量管理,Y:云客；Sp:我的空间； ZJ:转介绍； HK:获客险 ；XX:线下活动 ；SJ:社交电商；QT:其他
     */
    // @Column(name = "source")
    private String source;
    /**
     * 客户类型（U:待确认、A:准增员、C:准客户、TC:转介绍） CusCustomerTypeEnum枚举
     */
    // @Column(name = "customer_type")
    private String customerType;
    /**
     * 有无社保 CusSocialSecurityEnum枚举 1有，0没有
     */
    // @Column(name = "social_security")
    private String socialSecurity;
    /**
     * 有无子女（1:无、2:1胎、3:2胎、4:多胎） CusChildFlagEnum枚举
     */
    // @Column(name = "child_flag")
    private String childFlag;
    /**
     * 客户层级 LVL1：银钻，LVL2：翡翠，LVL3：明珠，VIP0：黑钻，VIP1：金钻 CusCustomerLevelEnum枚举
     */
    // @Column(name = "customer_level")
    private String customerLevel;
    /**
     * 保障状态（在保、不在保） CusEnsureStateEnum枚举
     */
    // @Column(name = "ensure_state")
    private String ensureState;
    /**
     * 会员分类（YTH会员）暂定Y代表有会员
     */
    // @Column(name = "member_flag")
    private String memberFlag;
    /**
     * CARE豆积分
     */
    // @Column(name = "care_points")
    private String carePoints;
    /**
     * CARE豆即将清零积分
     */
    // @Column(name = "end_care_points")
    private String endCarePoints;
    /**
     * 最后一次购买保单时间
     */
   // @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    // @Column(name = "last_insure_date")
    private String lastInsureDate;
    /**
     * 已退保保单比例
     */
    // @Column(name = "surrender")
    private String surrender;
    /**
     * 客户既往核保
     */
    // @Column(name = "past_uw_result")
    private String pastUWResult;
    /**
     * 既往疾病
     */
    // @Column(name = "past_disease")
    private String pastDisease;
    /**
     * 健康情况（1健康、2有重疾、3意外住院、4疾病住院） CusHealthFlagEnum枚举
     */
    // @Column(name = "health_flag")
    private String healthFlag;
    /**
     * 家庭收入（1:10万元以下、2:10-30万、3:30-80万、4:80万以上） CusFamilyIncomeEnum枚举
     */
    // @Column(name = "family_income")
    private String familyIncome;
    /**
     * 家庭支出（1:10万元以下、2:10-30万、3:30-80万、4:80万以上） CusFamilyExpenseEnum枚举
     */
    // @Column(name = "family_expense")
    private String familyExpense;
    /**
     * 交通工具（1公共交通、2自驾车） CusTransportationEnum枚举
     */
    // @Column(name = "transportation")
    private String transportation;
    /**
     * 住房状态（1无住房、2一套住房、3多套住房） CusHouseStateEnum枚举
     */
    // @Column(name = "house_state")
    private String houseState;
    /**
     * 贷款信息（1:无贷款、2:10万以下、3:10-20万、4:20万以上） CusLoanStateEnum枚举
     */
    // @Column(name = "loan_state")
    private String loanState;
    /**
     * 产品倾向（1养老、2意外、3年金、4重疾、5医疗、6分红） CusProductTendencyEnum枚举
     */
    // @Column(name = "product_tendency")
    private String productTendency;
    /**
     * 投资信息（1保险、2基金、3股票、4理财） CusInvestmentInfoEnum枚举
     */
    // @Column(name = "investment_info")
    private String investmentInfo;
    /**
     * 备注
     */
    // @Column(name = "bak_info")
    private String bakInfo;
    /**
     * ODS客户号
     */
    // @Column(name = "ods_customer_no")
    private String odsCustomerNo;
    /**
     * 云客归并号
     */
    // @Column(name = "customer_merge_no")
    private String customerMergeNo;
    /**
     * 是否企业微信客户 Y：是；N或空为否
     */
    // @Column(name = "wx_work_flag")
    private String wxWorkFlag;
    /**
     * 是否两年为加保客户
     */
    // @Column(name = "two_year_add_insu")
    private String twoYearAddInsu;
    /**
     * 是否客经平台分配客户
     */
    // @Column(name = "division_flag")
    private String divisionFlag;
    /**
     * 分配客户状态
     */
    // @Column(name = "division_state")
    private String divisionState;
    /**
     * 分配客户来源(公司来源，非公司来源)
     */
    // @Column(name = "division_source")
    private String divisionSource;
    /**
     * 分配客户活动名称
     */
    // @Column(name = "division_activity")
    private String divisionActivity;
    /**
     * 微信昵称
     */
    // @Column(name = "wechat_nick")
    // @FieldName(name = "nick")
    private String wechatNick;
    /**
     * 微信openid
     */
    // @Column(name = "open_id")
    private String openId;
    /**
     * 客户外部联系人ID
     */
    // @Column(name = "user_id")
    private String userId;
    /**
     * 微信UnionID
     */
    // @Column(name = "union_id")
    private String unionId;
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    // @Column(name = "make_date")
    private Timestamp makeDate;
    /**
     * 修改时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    // @Column(name = "modify_date")
    private Timestamp modifyDate;
    /**
     * 死亡标识
     */
    // @Column(name = "death_flag")
    private String deathFlag;

    /**
     * 是否为星标用户,枚举值（Y是，N或者空为否）
     */
    // @Column(name = "is_starred")
    private String isStarred;
    /**
     * 紧急联系人
     */
    // @Column(name = "emergency_contact")
    private String emergencyContact;
    /**
     * 已有产品类别 CusExistingProductCategoriesEnum枚举值
     * Acci-意外, Annu-年金, Ci-疾病, Finance-储蓄, Life-人寿, Medical-医疗
     */
    // @Column(name = "existing_product_categories")
    private String existingProductCategories;
    /**
     * 账号所属银行  CusBankIdEnum枚举值
     * 02,中国银行
     * 12,建设银行
     * 22,工商银行
     * 32,农业银行
     * 36,江苏银行
     * 44,平安银行
     * 46,广发银行
     * 56,浦发银行
     * 62,招商银行
     * 74,光大银行
     * 78,中信银行
     * 82,兴业银行
     * 88,交通银行
     * 94,邮储银行
     */
    // @Column(name = "bank_id")
    private String bankId;
    /**
     * 银行卡类型 CusCardTypeEnum（枚举值  0借记卡；1存折 ）
     */
    // @Column(name = "card_type")
    private String cardType;
    /**
     *银行卡号
     */
    // @Column(name = "card_number")
    private String cardNumber;
    /**
     * 商保情况
     */
    // @Column(name = "commercial_insurance_status")
    private String commercialInsuranceStatus;
    /**
     * 逻辑删除标志 CusLogicDelEnum Y是；N或空为否
     */
    // @Column(name = "logic_del")
    private String logicDel;
    /**
     * 客户去向
     */
    // @Column(name = "merge_to_customer_no")
    private String mergeToCustomerNo;
}
